This invention concerns a resource held in computer memory and multiple parallel processors which require simultaneous access to the resource. The resource may be a dither matrix or dither volume used for digitally halftoning a contone color image, in the form of an array of contone color pixel values, to bi-level dots, and this may be required to be accessed by different thresholding units in parallel. In another aspect the invention is a method of accessing such a resource.
Where multiple parallel processors require simultaneous access to a resource held in computer memory, several strategies are possible. First, the processors could take turns to access the resource, however this reduces the performance of the processors. Second, multi-ported memory could be employed, and third, the entire resource could be replicated in different memory banks; both the last options are expensive.
A particular example of a resource held in computer memory is a dither matrix or dither volume used for digitally halftoning a contone color image. When dither cell registration is not desired between different color planes of the image, a set thresholding units handling the dithering of individual color components may require simultaneous access to a different dither cell locations.
The invention is a resource held in computer memory, multiple parallel processors which require simultaneous access to the resource and a resource address generator to generate coordinates within the resource, where the resource is divided into different parts with each part being stored in different memory banks, and the resource address generator generates coordinates which are used to select the parts of the resource that are used by each processor, the selection being arranged to ensure that each part is only used by one processor at a time. The selection may also ensure that each processor uses the parts in the order in which they appear in the resource.
The resource may be a multi-threshold dither matrix for digitally halftoning a contone color image, in the form of an array of contone color pixel values, to bi-level dots. Said dither matrix may comprise, for each dither cell location, a fixed set of n thresholds defining n+1 intensity intervals within which the dither cell location is defined to be alternately not set and set.
The multiple parallel processors which require simultaneous access to the resource may be multi-threshold units provided for each color component of the image. All the multi-threshold units are operatively coupled to the multi-threshold dither matrix, and each multi-threshold unit determines the value of an output dot corresponding to a contone color pixel component value by determining whether the dither cell location corresponding to the location of said output dot is defined to be set within the intensity interval which the contone value uniquely selects.
Such a dither unit may operate to dither each contone color pixel value received at the input port by determining the value of a bi-level output dot for each color component by looking up the multi-threshold dither matrix.
The dither cell may be split into subcells and stored in separately addressable memories from which different multi-threshold values are retrieved in parallel.
Where a four color component contone layer is to be halftoned, four separate triple-threshold units may each receive a series of contone color pixel values for respective color components, and a dither cell address generator operates in conjunction with four four-way multiplexors, for respective threshold units, to control the retrieval of four different triple threshold values from four different subcells of the dither matrix.
The address generator is easily able to be arranged so that no two threshold units require simultaneous access to the same subcell, if dither cell registration between color panes is not desired.
In a further aspect, the invention is a method of accessing resources held in computer memory, where multiple parallel processors require simultaneous access to the resource and there is a resource address generator to generate coordinates within the resource, the method comprising the steps of:
dividing the resource into different parts;
storing each part in a different memory bank; and
operating the resource address generator to generates coordinates which are used to select the parts of the resource that are used by each processor, the selection being arranged to ensure that each part is only used by one processor at a time.
The selection may also ensure that each processor uses the parts in the order in which they appear in the resource.
The resource may be a multi-threshold dither matrix for digitally halftoning a contone color image, in the form of an array of contone color pixel values, to bi-level dots. Said dither matrix may comprise, for each dither cell location, a fixed set of n thresholds defining n+1 intensity intervals within which the dither cell location is defined to be alternately not set and set.
The multiple parallel processors which require simultaneous access to the resource may be multi-threshold units provided for each color component of the image. All the multi-threshold units are operatively coupled to the multi-threshold dither matrix, and each multi-threshold unit determines the value of an output dot corresponding to a contone color pixel component value by determining whether the dither cell location corresponding to the location of the output dot is defined to be set within the intensity interval which said contone value uniquely selects.
The dither cell may be split into subcells and stored in separately addressable memories from which different multi-threshold values are retrieved in parallel.
Where a four color component contone layer is to be halftoned, four separate triple-threshold units may each receive a series of contone color pixel values for respective color components, and a dither cell address generator operates in conjunction with four four-way multiplexors, for respective threshold units, to control the retrieval of four different triple threshold values from four different subcells of the dither matrix.
The dither cell address generator may generate dither cell coordinates which reflect the current dot coordinates modulo the size of the dither cell. The low-order bits of the dither cell coordinates may be used to address a location within each dither subcell, and the high-order bits of the dither cell coordinates may be used to select which dither subcell is used by each multi-threshold unit, the selection being arranged to ensure that each subcell is only used by one multi-threshold unit at a time, and to ensure that each multi-threshold unit uses the dither subcells in the order in which they appear in the dither cell.